Data integrity is an important feature for any data storage device and data transmission. Use of strong error-correction codes (ECCs) is recommended for various types of data storage devices include NAND flash memory devices. ECCs are also frequently used during the process of data transmission.
Error correcting code (ECC) refers to codes that add redundant data, or parity data, to a message, such that the message can be recovered by a receiver even when a number of errors were introduced, either during the process of transmission, or storage. In general, the ECC can correct the errors up to the capability of the code being used.
Generalized low-density parity-check (GLDPC) codes are an example of ECC. GLDPC codes generally provide an excellent bit error rate (BER) performance. However, it is difficult to design an encoder for these type of codes.
Maximum aposteriori probability (MAP) decoders can also be used to decode these codes. There is a remarkable performance gain with the MAP decoding on GLDPC compared to low-density parity-check (LDPC) and Bose-Chaudhuri-Hocquenghem (BCH) codes. A MAP decoder has the capability to generate soft information while decoding and, thus, can be used for both hard and soft decoding.